package com.iot.auth.service;

import com.dc3.common.bean.R;
import com.iot.auth.pojo.Dc3User;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.util.List;

/**
 * @Author 咕唧
 * @Date 2022/7/15 21:29
 * @Version 1.0
 */
public interface UserService {
    /**
     * 根据用户id查询数据
     *
     * @param id
     * @return
     */
    Mono<Dc3User> findById(String id);

    /**
     * 根据多个用户id查询数据
     *
     * @param ids
     * @return
     */
    Flux<Dc3User> findByIdIn(List<String> ids);

    /**
     * 添加用户
     *
     * @param userMono
     * @param tenantId
     * @return
     */
    Mono<R<Object>> addUser(Mono<Dc3User> userMono, String tenantId);

    /**
     * 根据姓名查询用户
     *
     * @param name
     * @return
     */
    Flux<Dc3User> findByName(String name);

    /**
     * 根据用户名查询id
     *
     * @param name
     * @return
     */
    Mono<List<String>> findByUserId(String name);

    /**
     * 用户登录
     *
     * @param username
     * @param password
     * @param tenantName
     * @return
     */
    Mono<String> login(String username, String password, String tenantName);

    Mono<Dc3User> findByNameAndTenantName(String username,String tenantName);
}
